g7towin: Fix reading of waypoint lines with empty (short)names.
authoroliskoli <oliskoli>
Fri, 4 May 2007 08:44:42 +0000 (08:44 +0000)
committeroliskoli <oliskoli>
Fri, 4 May 2007 08:44:42 +0000 (08:44 +0000)
g7towin.c

index f3e7c7e59f3cdafd487b2e9518f3978925181951..5c52a77519549b776c16786e00dd59fca8547688 100644 (file)
--- a/g7towin.c
+++ b/g7towin.c
@@ -272,17 +272,21 @@ parse_waypt(char *buff)
        
        if (gardown)
                cin = buff + 6;
-       else
+       else {
+               /* We've seen waypoints with length of 14 and 15 !!! */
                cin = buff + 15;
+               while ((cin > buff) && (! isspace(*cin))) cin--;
+       }
 
        while (isspace(*cin)) cin--;
        if (cin >= buff)
                wpt->shortname = xstrndup(buff, cin - buff + 1);
 
        if (gardown)
-               buff += 7;
+               buff += 6;
        else
-               buff += 16;
+               buff += 15;
+       while (isspace(*buff)) buff++;
 
        buff += parse_coordinates(buff, datum, grid,
                &wpt->latitude, &wpt->longitude, MYNAME);
@@ -438,7 +442,7 @@ data_read(void)
 
                case 'P': /* proximity waypoint */
                case 'W': /* normal waypoint */
-                       wpt = parse_waypt(cdata);
+                       wpt = parse_waypt(cin + 3);
                        prev = wpt;
                        if (wpt) {
                                if (mode == rtedata)